Variables de décision : Pour une type de centrale $X \in [A,B,C]$, et une heure de la journée $t\in {1,\dots,24}$, on définit : $$ N_t^{(X)} = \text{Nombre de centrales } X \text{allumées à } t\text{ h, (ENTIER)} $$ $$ P_t^{(X)} = \text{Puissance totale produite par les centrales } X \text{ à } t\text{ h, (CONTINUE)} $$ Contraintes : $$ N_t^{(X)} P_{min}^{(X)} \leq P_t^{(X)} \leq N_t^{(X)} P_{max}^{(X)} \text{ , Contraintes sur la puissance totale de chaque centrale} $$ $$ 0 \leq N_t^{(X)} \leq N^{(X)} \text{ , Contraintes sur le nombre de centrales allumées possible} $$ $$ \forall t, \sum_X P_t^{(X)} = D_t \text{ , Contrainte équilibre offre-demande} $$ Objectif : $$ \text{Minimiser} \sum_X \sum_T P_t^{(X)} C_{MWh}^{(X)} $$
Set parameter TokenServer to value "dev.cma.mines-paristech.fr"
Gurobi Optimizer version 9.5.2 build v9.5.2rc0 (win64)
Thread count: 4 physical cores, 8 logical processors, using up to 8 threads
Optimize a model with 168 rows, 144 columns and 360 nonzeros
Model fingerprint: 0xe0a5527a
Variable types: 72 continuous, 72 integer (0 binary)
Coefficient statistics:
Matrix range [1e+00, 4e+03]
Objective range [1e+00, 3e+00]
Bounds range [5e+00, 1e+01]
RHS range [2e+04, 4e+04]
Found heuristic solution: objective 1235375.0000
Presolve removed 162 rows and 139 columns
Presolve time: 0.03s
Presolved: 6 rows, 5 columns, 14 nonzeros
Found heuristic solution: objective 881275.00000
Variable types: 2 continuous, 3 integer (0 binary)
Root relaxation: objective 8.694000e+05, 2 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
0 0 869400.000 0 1 881275.000 869400.000 1.35% - 0s
H 0 0 869400.00000 869400.000 0.00% - 0s
0 0 869400.000 0 1 869400.000 869400.000 0.00% - 0s
Explored 1 nodes (2 simplex iterations) in 0.04 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)
Solution count 3: 869400 881275 1.23538e+06
Optimal solution found (tolerance 1.00e-04)
Best objective 8.694000000000e+05, best bound 8.694000000000e+05, gap 0.0000%
Coût : 869400.0
| h | Consommation (MW) | Production total | Coût total | Nb centrale A | Puissance tot A | Coût A | Facteur de chargeA | Nb centrale B | Puissance tot B | Coût B | Facteur de chargeB | Nb centrale C | Puissance tot C | Coût C | Facteur de chargeC | Coût MWh | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 15000 | 15000.0 | 20700.0 | 0 | 0.0 | 0.0 | 0 | 9 | 15000.0 | 20700.0 | 95 | 0 | 0.0 | 0.0 | 0 | 1.380000 |
| 1 | 1 | 15000 | 15000.0 | 20700.0 | 0 | 0.0 | 0.0 | 0 | 9 | 15000.0 | 20700.0 | 95 | 0 | 0.0 | 0.0 | 0 | 1.380000 |
| 2 | 2 | 15000 | 15000.0 | 20700.0 | 0 | 0.0 | 0.0 | 0 | 9 | 15000.0 | 20700.0 | 95 | 0 | 0.0 | 0.0 | 0 | 1.380000 |
| 3 | 3 | 15000 | 15000.0 | 20700.0 | 0 | 0.0 | 0.0 | 0 | 9 | 15000.0 | 20700.0 | 95 | 0 | 0.0 | 0.0 | 0 | 1.380000 |
| 4 | 4 | 15000 | 15000.0 | 20700.0 | 0 | 0.0 | 0.0 | 0 | 9 | 15000.0 | 20700.0 | 95 | 0 | 0.0 | 0.0 | 0 | 1.380000 |
| 5 | 5 | 15000 | 15000.0 | 20700.0 | 0 | 0.0 | 0.0 | 0 | 9 | 15000.0 | 20700.0 | 95 | 0 | 0.0 | 0.0 | 0 | 1.380000 |
| 6 | 6 | 30000 | 30000.0 | 42900.0 | 12 | 12500.0 | 18750.0 | 52 | 10 | 17500.0 | 24150.0 | 100 | 0 | 0.0 | 0.0 | 0 | 1.430000 |
| 7 | 7 | 30000 | 30000.0 | 42900.0 | 12 | 12500.0 | 18750.0 | 52 | 10 | 17500.0 | 24150.0 | 100 | 0 | 0.0 | 0.0 | 0 | 1.430000 |
| 8 | 8 | 30000 | 30000.0 | 42900.0 | 12 | 12500.0 | 18750.0 | 52 | 10 | 17500.0 | 24150.0 | 100 | 0 | 0.0 | 0.0 | 0 | 1.430000 |
| 9 | 9 | 25000 | 25000.0 | 35400.0 | 4 | 7500.0 | 11250.0 | 93 | 10 | 17500.0 | 24150.0 | 100 | 0 | 0.0 | 0.0 | 0 | 1.416000 |
| 10 | 10 | 25000 | 25000.0 | 35400.0 | 4 | 7500.0 | 11250.0 | 93 | 10 | 17500.0 | 24150.0 | 100 | 0 | 0.0 | 0.0 | 0 | 1.416000 |
| 11 | 11 | 25000 | 25000.0 | 35400.0 | 4 | 7500.0 | 11250.0 | 93 | 10 | 17500.0 | 24150.0 | 100 | 0 | 0.0 | 0.0 | 0 | 1.416000 |
| 12 | 12 | 25000 | 25000.0 | 35400.0 | 4 | 7500.0 | 11250.0 | 93 | 10 | 17500.0 | 24150.0 | 100 | 0 | 0.0 | 0.0 | 0 | 1.416000 |
| 13 | 13 | 25000 | 25000.0 | 35400.0 | 4 | 7500.0 | 11250.0 | 93 | 10 | 17500.0 | 24150.0 | 100 | 0 | 0.0 | 0.0 | 0 | 1.416000 |
| 14 | 14 | 25000 | 25000.0 | 35400.0 | 4 | 7500.0 | 11250.0 | 93 | 10 | 17500.0 | 24150.0 | 100 | 0 | 0.0 | 0.0 | 0 | 1.416000 |
| 15 | 15 | 40000 | 40000.0 | 57900.0 | 12 | 22500.0 | 33750.0 | 93 | 10 | 17500.0 | 24150.0 | 100 | 0 | 0.0 | 0.0 | 0 | 1.447500 |
| 16 | 16 | 40000 | 40000.0 | 57900.0 | 12 | 22500.0 | 33750.0 | 93 | 10 | 17500.0 | 24150.0 | 100 | 0 | 0.0 | 0.0 | 0 | 1.447500 |
| 17 | 17 | 40000 | 40000.0 | 57900.0 | 12 | 22500.0 | 33750.0 | 93 | 10 | 17500.0 | 24150.0 | 100 | 0 | 0.0 | 0.0 | 0 | 1.447500 |
| 18 | 18 | 27000 | 27000.0 | 38400.0 | 5 | 9500.0 | 14250.0 | 95 | 10 | 17500.0 | 24150.0 | 100 | 0 | 0.0 | 0.0 | 0 | 1.422222 |
| 19 | 19 | 27000 | 27000.0 | 38400.0 | 5 | 9500.0 | 14250.0 | 95 | 10 | 17500.0 | 24150.0 | 100 | 0 | 0.0 | 0.0 | 0 | 1.422222 |
| 20 | 20 | 27000 | 27000.0 | 38400.0 | 5 | 9500.0 | 14250.0 | 95 | 10 | 17500.0 | 24150.0 | 100 | 0 | 0.0 | 0.0 | 0 | 1.422222 |
| 21 | 21 | 27000 | 27000.0 | 38400.0 | 5 | 9500.0 | 14250.0 | 95 | 10 | 17500.0 | 24150.0 | 100 | 0 | 0.0 | 0.0 | 0 | 1.422222 |
| 22 | 22 | 27000 | 27000.0 | 38400.0 | 5 | 9500.0 | 14250.0 | 95 | 10 | 17500.0 | 24150.0 | 100 | 0 | 0.0 | 0.0 | 0 | 1.422222 |
| 23 | 23 | 27000 | 27000.0 | 38400.0 | 5 | 9500.0 | 14250.0 | 95 | 10 | 17500.0 | 24150.0 | 100 | 0 | 0.0 | 0.0 | 0 | 1.422222 |
Gurobi Optimizer version 9.5.2 build v9.5.2rc0 (win64)
Thread count: 4 physical cores, 8 logical processors, using up to 8 threads
Optimize a model with 168 rows, 144 columns and 360 nonzeros
Model fingerprint: 0x48de0531
Coefficient statistics:
Matrix range [1e+00, 4e+03]
Objective range [1e+00, 3e+00]
Bounds range [5e+00, 1e+01]
RHS range [2e+04, 4e+04]
Presolve removed 153 rows and 99 columns
Presolve time: 0.00s
Presolved: 15 rows, 45 columns, 45 nonzeros
Iteration Objective Primal Inf. Dual Inf. Time
0 8.5266000e+05 1.743750e+04 0.000000e+00 0s
15 8.6940000e+05 0.000000e+00 0.000000e+00 0s
Solved in 15 iterations and 0.00 seconds (0.00 work units)
Optimal objective 8.694000000e+05
Coût : 869400.0
Gurobi Optimizer version 9.5.2 build v9.5.2rc0 (win64)
Thread count: 4 physical cores, 8 logical processors, using up to 8 threads
Optimize a model with 168 rows, 144 columns and 360 nonzeros
Model fingerprint: 0x54e335bf
Variable types: 72 continuous, 72 integer (0 binary)
Coefficient statistics:
Matrix range [1e+00, 4e+03]
Objective range [1e+00, 2e+03]
Bounds range [5e+00, 1e+01]
RHS range [2e+04, 4e+04]
Found heuristic solution: objective 1271875.0000
Presolve removed 162 rows and 139 columns
Presolve time: 0.02s
Presolved: 6 rows, 5 columns, 14 nonzeros
Found heuristic solution: objective 987500.00000
Variable types: 2 continuous, 3 integer (0 binary)
Found heuristic solution: objective 985950.00000
Root relaxation: objective 9.787500e+05, 2 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
0 0 978750.000 0 1 985950.000 978750.000 0.73% - 0s
H 0 0 978900.00000 978750.000 0.02% - 0s
0 0 978750.000 0 1 978900.000 978750.000 0.02% - 0s
Explored 1 nodes (2 simplex iterations) in 0.04 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)
Solution count 4: 978900 985950 987500 1.27188e+06
Optimal solution found (tolerance 1.00e-04)
Best objective 9.789000000000e+05, best bound 9.789000000000e+05, gap 0.0000%
Coût : 978900.0
Pour ce problème on modifie les variables de décisions et on y adapte les contraintes.
Variables de décision : Pour une type de centrale $X \in [A,B,C]$, et une heure de la journée $t\in {1,\dots,24}$, on définit : $$ N_t^{(X)} = \text{Nombre de centrales } X \text{allumées à } t\text{ h, (ENTIER)} $$ $$ N_{start,t}^{(X)} = \text{Nombre de centrales } X \text{démarrées à } t\text{ h, (ENTIER)} $$ $$ P_t^{(X)} = \text{Puissance totale produite par les centrales } X \text{ à } t\text{ h, (CONTINUE)} $$ Contraintes (par convention $N_{-1}^{(X)}=0$): $$ N_t^{(X)} P_{min}^{(X)} \leq P_t^{(X)} \leq N_t^{(X)} P_{max}^{(X)} \text{ , Contraintes sur la puissance totale de chaque centrale} $$ $$ N_{start,t}^{(X)} \leq N_t^{(X)} \leq N_{start,t}^{(X)}+N_{t-1}^{(X)} \text{ , Contraintes sur le nombre de centrales allumées possible} $$ $$ 0 \leq N_{start,t}^{(X)} \leq N^{(X)}-N_{t-1}^{(X)} \text{ , Contraintes sur le nombre de centrales adémarrées possible} $$ $$ \sum_X P_t^{(X)} = D_t \text{ , Contrainte équilibre offre-demande} $$ Objectif : $$ \text{Minimiser} \sum_X \sum_T (P_t^{(X)} - P_{min}^{(X)}N_t^{(X)}) C_{MWh}^{(X)} + N_t^{(X)}C_{base}^{(X)} + N_{start,t}^{(X)}C_{start}^{(X)} $$
Gurobi Optimizer version 9.5.2 build v9.5.2rc0 (win64)
Thread count: 4 physical cores, 8 logical processors, using up to 8 threads
Optimize a model with 384 rows, 216 columns and 858 nonzeros
Model fingerprint: 0x11b2ce6a
Variable types: 72 continuous, 144 integer (0 binary)
Coefficient statistics:
Matrix range [1e+00, 4e+03]
Objective range [1e+00, 2e+03]
Bounds range [5e+00, 1e+01]
RHS range [5e+00, 4e+04]
Found heuristic solution: objective 1474375.0000
Presolve removed 180 rows and 30 columns
Presolve time: 0.00s
Presolved: 204 rows, 186 columns, 522 nonzeros
Variable types: 42 continuous, 144 integer (0 binary)
Found heuristic solution: objective 1379630.0000
Root relaxation: objective 1.011257e+06, 58 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
0 0 1011257.14 0 26 1379630.00 1011257.14 26.7% - 0s
H 0 0 1019660.0000 1011257.14 0.82% - 0s
H 0 0 1016755.0000 1011257.14 0.54% - 0s
H 0 0 1016515.0000 1011257.14 0.52% - 0s
H 0 0 1016100.0000 1011257.14 0.48% - 0s
0 0 1014233.33 0 4 1016100.00 1014233.33 0.18% - 0s
H 0 0 1015860.0000 1014233.33 0.16% - 0s
H 0 0 1014400.0000 1014233.33 0.02% - 0s
Cutting planes:
Gomory: 3
MIR: 27
StrongCG: 2
Explored 1 nodes (98 simplex iterations) in 0.03 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)
Solution count 8: 1.0144e+06 1.01586e+06 1.0161e+06 ... 1.47438e+06
Optimal solution found (tolerance 1.00e-04)
Best objective 1.014400000000e+06, best bound 1.014400000000e+06, gap 0.0000%
Pour intégrer la réserve de puissance on ajoute la contrainte : $$ \sum_X N_t^{(X)}P_{max}^{(X)}\geq D_t\times 1,15 $$
Gurobi Optimizer version 9.5.2 build v9.5.2rc0 (win64)
Thread count: 4 physical cores, 8 logical processors, using up to 8 threads
Optimize a model with 408 rows, 216 columns and 930 nonzeros
Model fingerprint: 0xff8f72cd
Variable types: 72 continuous, 144 integer (0 binary)
Coefficient statistics:
Matrix range [1e+00, 4e+03]
Objective range [1e+00, 2e+03]
Bounds range [5e+00, 1e+01]
RHS range [5e+00, 5e+04]
MIP start from previous solve did not produce a new incumbent solution
MIP start from previous solve violates constraint Réserve_de_puissance_à_15 by 4500.000000000
Found heuristic solution: objective 1319775.0000
Presolve removed 180 rows and 30 columns
Presolve time: 0.00s
Presolved: 228 rows, 186 columns, 594 nonzeros
Found heuristic solution: objective 1239990.0000
Variable types: 42 continuous, 144 integer (0 binary)
Found heuristic solution: objective 1214220.0000
Root relaxation: objective 1.012257e+06, 67 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
0 0 1012257.14 0 26 1214220.00 1012257.14 16.6% - 0s
H 0 0 1020660.0000 1012257.14 0.82% - 0s
H 0 0 1018680.0000 1012257.14 0.63% - 0s
H 0 0 1017340.0000 1012257.14 0.50% - 0s
H 0 0 1017100.0000 1012257.14 0.48% - 0s
H 0 0 1016695.0000 1012257.14 0.44% - 0s
H 0 0 1015725.0000 1015150.00 0.06% - 0s
0 0 1015150.00 0 12 1015725.00 1015150.00 0.06% - 0s
H 0 0 1015150.0000 1015150.00 0.00% - 0s
Cutting planes:
Gomory: 1
MIR: 30
Explored 1 nodes (102 simplex iterations) in 0.03 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)
Solution count 10: 1.01515e+06 1.01572e+06 1.0167e+06 ... 1.31978e+06
Optimal solution found (tolerance 1.00e-04)
Best objective 1.015150000000e+06, best bound 1.015150000000e+06, gap 0.0000%
Pour ce problème on modifie la convention $N_{-1}^{(X)}=0$ par $N_{-1}^{(X)}=N_{23}^{(X)}$
Gurobi Optimizer version 9.5.2 build v9.5.2rc0 (win64)
Thread count: 4 physical cores, 8 logical processors, using up to 8 threads
Optimize a model with 408 rows, 216 columns and 936 nonzeros
Model fingerprint: 0xbaa4c106
Variable types: 72 continuous, 144 integer (0 binary)
Coefficient statistics:
Matrix range [1e+00, 4e+03]
Objective range [1e+00, 2e+03]
Bounds range [5e+00, 1e+01]
RHS range [5e+00, 5e+04]
Found heuristic solution: objective 1354515.0000
Presolve removed 177 rows and 27 columns
Presolve time: 0.00s
Presolved: 231 rows, 189 columns, 603 nonzeros
Found heuristic solution: objective 1265490.0000
Variable types: 42 continuous, 147 integer (0 binary)
Found heuristic solution: objective 1227725.0000
Root relaxation: objective 9.855143e+05, 54 iterations, 0.00 seconds (0.00 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
0 0 985514.286 0 26 1227725.00 985514.286 19.7% - 0s
H 0 0 993725.00000 985514.286 0.83% - 0s
H 0 0 990820.00000 985514.286 0.54% - 0s
H 0 0 990580.00000 985514.286 0.51% - 0s
H 0 0 990165.00000 985514.286 0.47% - 0s
0 0 988540.000 0 3 990165.000 988540.000 0.16% - 0s
H 0 0 989925.00000 988540.000 0.14% - 0s
H 0 0 989030.00000 988540.000 0.05% - 0s
H 0 0 988790.00000 988540.000 0.03% - 0s
H 0 0 988540.00000 988540.000 0.00% - 0s
Cutting planes:
Gomory: 1
MIR: 19
Explored 1 nodes (85 simplex iterations) in 0.03 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)
Solution count 10: 988540 988790 989030 ... 1.26549e+06
Optimal solution found (tolerance 1.00e-04)
Best objective 9.885400000000e+05, best bound 9.885400000000e+05, gap 0.0000%
On ajoute les variables de décisions suivantes:
pour $Y\in[9,14]$ (pour les centrales de 900 MW et 1400MW),
$$
H_t^{(Y)} \in \{0,1\} \text{ , vaut 1 si la centrale $X$ fonctionne à } t \text{ h 0 sinon}
$$
$$
H_{start,t}^{(Y)} \in \{0,1\} \text{ , vaut 1 si la centrale $X$ démarre à } t \text{ h 0 sinon}
$$
Avec les contraintes :
$$
H_{start,t}^{(Y)} \leq 1 - H_{t-1}^{(Y)} \text{ , Il n'y a pas de démarrage si la centrale est déjà allumée}
$$
$$
H_{start,t}^{(Y)} \leq H_{t}^{(Y)} \text{ , La centrale fonctionne lorsqu'elle est est démarrée}
$$
$$
\sum_X P_t^{(X)} + \sum_Y N_t^{(Y)}P^{(Y)}= D_t \text{ , Contrainte équilibre offre-demande}
$$
$$
\sum_X N_t^{(X)}P_{max}^{(X)} + \sum_X (1-H_t^{(Y)})P^{(Y)}\geq D_t\times 1,15 \text{ , marges de sécurité}
$$
L'objectif mis à jour devient:
$$
\text{Minimiser} \sum_X \sum_t (P_t^{(X)} - P_{min}^{(X)}N_t^{(X)}) C_{MWh}^{(X)} + N_t^{(X)}C_{base}^{(X)} + N_{start,t}^{(X)}C_{start}^{(X)} + \sum_Y \sum_t H_t^{(Y)}C_{base}^{(Y)} + H_t^{(Y)}C_{start}^{(Y)}
$$
On ajoute les variables de décision suivante :
$$
S_t = \text{Puissance appelée par le pompage à l'instant }t
$$
Puis la contrainte :
$$
S_t d^{(S)} = \sum_Y N_t^{(Y)}d^{(Y)}
$$
Où $d^{(S)}$ représente la hauteur d'eau élevée par MWh et $d^{(Y)}$ la hauteur d'eau prélevée lorsque la centrale $Y$ fonctionne.
On met à jour les contraintes suivante:
$$
\sum_X P_t^{(X)} + \sum_Y N_t^{(Y)}P^{(Y)}-S_t= D_t \text{ , Contrainte équilibre offre-demande}
$$